﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ProjControleModelos;

namespace ProjControleDAL
{
    public class FuncionarioDAL
    {
        Dados objD=null;
        SqlCommand cmd;
        #region Construtor
        public FuncionarioDAL()
        {
            //construtor
        }
        #endregion

        #region Métodos
        //inserir
        public void inserir(Funcionarios objF)
        {
            cmd = new SqlCommand();
            objD = new Dados();
            
            try
            {
                cmd.CommandText = "insert into funcionario values (@nome,@dt_nascimento,@dt_cadastro,@rg,@cpf," +
                    "@obs,@login,@senha,@endereco,@bairro,@num_casa,@telefone,@celular)";
                cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = objF.nome;
                cmd.Parameters.Add(new SqlParameter("@dt_nascimento", SqlDbType.Date)).Value = objF.dt_nascimento;
                cmd.Parameters.Add(new SqlParameter("@dt_cadastro", SqlDbType.Date)).Value = objF.dt_cadastro;
                cmd.Parameters.Add(new SqlParameter("@rg", SqlDbType.VarChar)).Value = objF.rg;
                cmd.Parameters.Add(new SqlParameter("@cpf", SqlDbType.VarChar)).Value = objF.cpf;
                cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objF.observacao;
                cmd.Parameters.Add(new SqlParameter("@login", SqlDbType.VarChar)).Value = objF.login;
                cmd.Parameters.Add(new SqlParameter("@senha", SqlDbType.VarChar)).Value = objF.senha;
                cmd.Parameters.Add(new SqlParameter("@endereco", SqlDbType.VarChar)).Value = objF.endereco;
                cmd.Parameters.Add(new SqlParameter("@bairro", SqlDbType.VarChar)).Value = objF.bairro;
                cmd.Parameters.Add(new SqlParameter("@num_casa", SqlDbType.VarChar)).Value = objF.num_casa;
                cmd.Parameters.Add(new SqlParameter("@telefone", SqlDbType.VarChar)).Value = objF.telefone;
                cmd.Parameters.Add(new SqlParameter("@celular", SqlDbType.VarChar)).Value = objF.celular;
                //cmd.Parameters.Add(new SqlParameter("@dt_demissao", SqlDbType.DateTime)).Value = objF.dt_demissao;
               objF.codigo = objD.executaComandoAI(cmd, "funcionario");
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
            cmd = null;
            objD = null;
            
        }
        //alterar
        public void alterar(Funcionarios objF)
        {
            cmd = new SqlCommand();
            objD = new Dados();
            try
            {
                cmd.CommandText = "update funcionario set nome_funcionario = @nome, dt_nasc_funcionario = @dt_nascimento, dt_cadas_funcionario = @dt_cadastro," +
                    "rg_funcionario = @rg, cpf_funcionario = @cpf, obs_funcionario = @obs, login_funcionario = @login, senha_funcionario = @senha,"+
                    "endereco_funcionario = @endereco,bairro_funcionario = @bairro,num_casa = @num_casa," +
                    "telefone_funcionario = @telefone, celular_funcionario = @celular where cod_funcionario = @cod";
                cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = objF.nome;
                cmd.Parameters.Add(new SqlParameter("@dt_nascimento", SqlDbType.Date)).Value = objF.dt_nascimento;
                cmd.Parameters.Add(new SqlParameter("@dt_cadastro", SqlDbType.Date)).Value = objF.dt_cadastro;
                cmd.Parameters.Add(new SqlParameter("@rg", SqlDbType.VarChar)).Value = objF.rg;
                cmd.Parameters.Add(new SqlParameter("@cpf", SqlDbType.VarChar)).Value = objF.cpf;
                cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objF.observacao;
                cmd.Parameters.Add(new SqlParameter("@login", SqlDbType.VarChar)).Value = objF.login;
                cmd.Parameters.Add(new SqlParameter("@senha", SqlDbType.VarChar)).Value = objF.senha;
                cmd.Parameters.Add(new SqlParameter("@endereco", SqlDbType.VarChar)).Value = objF.endereco;
                cmd.Parameters.Add(new SqlParameter("@bairro", SqlDbType.VarChar)).Value = objF.bairro;
                cmd.Parameters.Add(new SqlParameter("@num_casa", SqlDbType.VarChar)).Value = objF.num_casa;
                cmd.Parameters.Add(new SqlParameter("@telefone", SqlDbType.VarChar)).Value = objF.telefone;
                cmd.Parameters.Add(new SqlParameter("@celular", SqlDbType.VarChar)).Value = objF.celular;
                //cmd.Parameters.Add(new SqlParameter("@d_demissao", SqlDbType.DateTime)).Value = objF.dt_demissao;
                cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = objF.codigo;
                objD.executaComando(cmd);
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
            cmd = null;
            objD = null;
        }
        //excluir
        public void excluir(Funcionarios objF)
        {
            cmd = new SqlCommand();
            objD = new Dados();
            try
            {
                cmd.CommandText = "delete from funcionario where cod_funcionario = @cod";
                cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = objF.codigo;
                objD.executaComando(cmd);
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
            cmd = null;
            objD = null;
        }
        //localizar
        public Funcionarios localizar(int cod)
        {
            Funcionarios objF = null;
            DataTable tab;
            try
            {
                cmd = new SqlCommand();
                objD = new Dados();
                cmd.CommandText = "select * from funcionario where cod_funcionario = @cod";
                cmd.Parameters.Add(new SqlParameter("@cod", SqlDbType.Int)).Value = cod;
                tab = objD.executaConsulta(cmd);
                if (tab != null)
                    if (tab.Rows.Count == 1)
                    {
                        objF = new Funcionarios(cod, tab.Rows[0]["nome_funcionario"].ToString(),
                           DateTime.Parse(tab.Rows[0]["dt_nasc_funcionario"].ToString()),
                           DateTime.Parse(tab.Rows[0]["dt_cadas_funcionario"].ToString()),
                            tab.Rows[0]["rg_funcionario"].ToString(),
                            tab.Rows[0]["cpf_funcionario"].ToString(),
                            tab.Rows[0]["obs_funcionario"].ToString(),
                            tab.Rows[0]["login_funcionario"].ToString(),
                            tab.Rows[0]["senha_funcionario"].ToString(),
                            tab.Rows[0]["endereco_funcionario"].ToString(),
                            tab.Rows[0]["bairro_funcionario"].ToString(),
                            tab.Rows[0]["num_casa"].ToString(),
                            tab.Rows[0]["telefone_funcionario"].ToString(),
                            tab.Rows[0]["celular_funcionario"].ToString());
                            //DateTime.Parse(tab.Rows[0]["dt_demissao"].ToString()));
                    }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            cmd = null;
            objD = null;
            return objF;
        }
        //localizar pelo nome
        public DataTable localizar(string nome)
        {
            cmd = new SqlCommand();
            objD = new Dados();
            DataTable tab;
            try
            {
                cmd.CommandText = "select * from funcionario where nome_funcionario like @nome order by nome_funcionario";
                cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = "%" + nome + "%";
                tab = objD.executaConsulta(cmd);
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
            cmd = null;
            objD = null;
            return tab;
        }
        public DataTable localizar(int codigo, String senha)
        {
            DataTable tab;
            try
            {
                cmd = new SqlCommand();
                objD = new Dados();
                cmd.CommandText = "select nome_funcionario,login_funcionario,senha_funcionario from funcionario " + 
                    "where cod_funcionario = @codigo and senha_funcionario = @senha";
                cmd.Parameters.Add(new SqlParameter("@codigo", SqlDbType.VarChar)).Value = codigo;
                cmd.Parameters.Add(new SqlParameter("@senha", SqlDbType.VarChar)).Value = senha;
                tab = objD.executaConsulta(cmd);

            }
            catch (Exception ex)
            {
                
                throw ex;
            }
            cmd = null;
            objD = null;
            return tab;
        }
        #endregion
    }
}
